package cn.iocoder.yudao.module.crossborder.inventory.api.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 仓库信息 DTO
 *
 * @author LHL
 */
@Schema(description = "RPC 服务 - 仓库信息 DTO")
@Data
public class WarehouseDTO {

    @Schema(description = "仓库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
    private Long id;

    @Schema(description = "仓库编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "WH001")
    private String code;

    @Schema(description = "仓库名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "上海仓库")
    private String name;

    @Schema(description = "仓库类型", example = "1")
    private Integer type;

    @Schema(description = "仓库状态", example = "1")
    private Integer status;

    @Schema(description = "国家代码", example = "CN")
    private String countryCode;

    @Schema(description = "省份", example = "上海市")
    private String province;

    @Schema(description = "城市", example = "上海市")
    private String city;

    @Schema(description = "详细地址", example = "浦东新区张江高科技园区")
    private String address;

    @Schema(description = "邮编", example = "200000")
    private String zipCode;

    @Schema(description = "联系人", example = "张三")
    private String contactPerson;

    @Schema(description = "联系电话", example = "13800138000")
    private String contactPhone;

    @Schema(description = "联系邮箱", example = "warehouse@example.com")
    private String contactEmail;

    @Schema(description = "仓库面积", example = "5000.00")
    private BigDecimal area;

    @Schema(description = "仓库容量", example = "10000")
    private Integer capacity;

    @Schema(description = "已用容量", example = "3000")
    private Integer usedCapacity;

    @Schema(description = "可用容量", example = "7000")
    private Integer availableCapacity;

    @Schema(description = "是否启用", example = "true")
    private Boolean enabled;

    @Schema(description = "是否默认仓库", example = "false")
    private Boolean isDefault;

    @Schema(description = "排序", example = "1")
    private Integer sort;

    @Schema(description = "备注", example = "主要仓库")
    private String remark;

    @Schema(description = "创建时间")
    private LocalDateTime createTime;

    @Schema(description = "更新时间")
    private LocalDateTime updateTime;

}
